iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
Software Development

RISC-V 與處理器之架構學習及應用系列 第 2

[Day02] 現代處理器架構與效能最佳化技術

  • 分享至 

  • xImage
  •  

一、RISC

  1. RISC 使用快速的 RAM 來構建快取指令,快取中的指令內容可以隨應用需求動態改變,提供更快的指令存取,不用依賴於硬體內置的固定指令集。
  2. RISC 使用簡單的 ISA(指令集架構),編譯器生成的 code 只會使用少量的簡單指令,簡化了處理器的設計。

二、Processor Performance

https://ithelp.ithome.com.tw/upload/images/20240915/20156517EZsQ8XUVid.jpg

  • 程序運行時間由每個程序的指令數、每條指令的時鐘週期數(CPI)、每個時鐘週期的時間三者共同決定。

三、CISC vs. RISC Today

  1. CISC(複雜指令集電腦)
  • 與個人電腦時代相關,x86 架構主導了桌面和伺服器市場。
  • 硬體將 x86 指令翻譯為內部的 RISC 指令。
  1. RISC(精簡指令集電腦)
  • 與後 PC 時代相關,適用於客戶端和雲計算。
  • 更重視晶片面積和能源效率。
  • 市場中 98% 的 RISC 處理器由 ARM、Tensilica、ARC 和 MIPS 組成。
  1. 雖然 RISC 每個程式執行的指令數可能較多,但由於其簡化的指令集,RISC 每條指令的時鐘週期數(CPI)較少,因此整體運行速度往往快於 CISC。

四、VLIW (Very Long Instruction Word)

https://ithelp.ithome.com.tw/upload/images/20240915/20156517WOfBoagVTx.jpg

  1. 是一種處理器架構設計方法,其主要特點是將多個操作打包到一條長指令中,並讓處理器同時執行這些操作。這種架構的目標是通過指令層級平行(ILP)來提高處理器的效能,而不需要動態調整的硬體複雜性。
  2. 指令中不同操作之間保證平行性,無需跨操作的 RAW(讀取後寫入)檢查。
  3. 保證操作的固定延遲。
  4. VLIW Compiler 的責任:
  • 確保操作之間的資料不互相影響,避免資料危險(無交錯)。
  • 通常使用 NOP 指令來分隔操作,避免資料衝突。

五、Loop Unrolling

  1. 這是一種改善迴圈效能的方法。迴圈展開可以減少迴圈,從而提高執行效率。
  • 原始迴圈

    for (i=0; i<N; i++)
        B[i] = A[i] + C;
    

    這個迴圈逐一處理數組元素,每次執行一次加法操作。

  • 展開後的迴圈

    for (i=0; i<N; i+=4) {
        B[i]   = A[i] + C;
        B[i+1] = A[i+1] + C;
        B[i+2] = A[i+2] + C;
        B[i+3] = A[i+3] + C;
    }
    

    將內部迴圈展開一次處理 4 次迭代,這樣做可以減少迴圈控制(如比較、跳轉指令)的頻率,從而提升整體運行效率。

六、Scheduling Loop Unrolled Code

以下展示了展開後的迴圈 code 是如何在硬體中被調整執行的。
https://ithelp.ithome.com.tw/upload/images/20240915/20156517btO7uzqcsz.jpg

  • 展開 4 次
    展開的 code 包含 4 次迭代被分配到不同的硬體資源上進行並行執行,每次執行載入(load)、加法(add)、存儲(store)等操作。
  • 硬體調整
    調整圖表中展示了指令如何分配到不同的資源(如整數單元、浮點加法單元):
    • fld 指令(浮點載入)在 M1 和 M2 週期中執行。
    • fadd 指令(浮點加法)在 FP+ 和 FPx 單元中執行。
    • fsd 指令(浮點存儲)安排在後面的週期中執行。
  • 效能計算
    • 計算浮點運算每週期數量(FLOPS/Cycle):
      • 4 次浮點加法(fadd)在 11 個時鐘週期內完成。
      • 這導致 FLOPS/週期 = ( \frac{4}{11} \approx 0.36 )。

透過迴圈展開和有效的指令調整,可以顯著提升處理器的平行性和 throughput。且需要編譯器或開發者仔細安排指令,以避免數據危險和資源衝突。

七、如何構建可擴展的多處理器系統?

  1. NUMA, Non-Uniform Memory Access(共享記憶體架構)
    • 此架構使用共享記憶體模型,其中每個處理器都能通過載入和存儲指令訪問共享的記憶體。
    • 利用分佈式目錄來跟踪哪些處理器正在共享記憶體,以保持一致性。
    • e.g. Stanford 的 DASH/FLASH(1992-2000 年)。
  2. Message Passing Cluster(訊息傳遞叢集)
    • 使用訊息傳遞(如 RPC 或 MPI)在每個處理器擁有獨立地址空間的集群系統中通信。
    • 獨立的計算機通過局域網路交換機相互連接,以提供共同的服務。
    • e.g. Berkeley 的 Network of Workstations(1993-1998 年)。

八、SGI Origin 2800 NUMA vs. NOW-2

  1. SGI Origin 2800 NUMA
    • 可以擴展到 128 個 CPU,適用於需要高可擴展性帶寬的科學計算。
    • 使用 Numalink2 連接,提供 12 Gbit/s 的帶寬。
  2. NOW-2(Network of Workstations)
    • 包含 105 台 Sun 工作站,每台配有 2 個硬碟,並使用 Myrinet 交換系統區域網絡,每個鏈接速度為 1 Gbit/s。
    • 適用於搜索和科學計算應用。

九、NUMA Advantages

  1. 編程方便
    • 當通信模式複雜或在執行期間動態變化時,NUMA 提供了更易於管理的編程模型。
  2. 使用熟悉的 SMP 模型開發應用程序
    • NUMA 允許開發者使用熟悉的對稱多處理(SMP)模型來開發應用,降低了開發難度。
  3. 降低通信開銷
    • NUMA 架構通過隱式通信有效利用帶寬,特別適合小型數據項目。
  4. 硬體控制的快取
    • NUMA 使用硬體控制的快取來減少遠程通信,通過快取所有數據來提高效能。

十、Cluster Drawbacks

  1. 管理成本
    • 管理 N 台機器的叢集,成本接近於管理 N 台獨立機器,而管理一個具有共享地址空間的多處理器系統相當於管理一台大機器,通常較為簡便。
  2. 連接方式的不同
    • 叢集通常使用 I/O 匯流排連接,而多處理器系統通常使用內存匯流排連接,這可能導致效能瓶頸。
  3. 內存與操作系統的複製
    • 叢集中的每台機器都有獨立的內存和操作系統,這意味著有 N 份內存和操作系統的複製。相比之下,共享地址空間的多處理器系統允許單一程序幾乎使用所有的內存。

十一、Cluster Advantages

  1. 錯誤隔離
    • 每台機器擁有獨立的地址空間,可以有效隔離錯誤,防止錯誤擴散到整個系統。
  2. 維修便利
    • 更容易更換或維修單台機器,而不會導致整個系統的崩潰。
  3. 擴展性
    • 叢集系統易於擴展,只需添加更多的機器即可增加計算能力。
  4. 成本效益
    • 使用現成的交換機和計算機來構建大型機器,降低了開發成本,利用高體量的市售產品來分攤成本。
  5. 歷史應用
    • 許多早期的互聯網公司,如 Inktomi、Amazon、Google 等,都依賴於 PC 叢集來提供每天數百萬人使用的服務。

兩種不同的可擴展多處理器系統架構:共享記憶體(NUMA)和訊息傳遞叢集(Cluster)。NUMA 提供了高效的記憶體訪問,但建設和維護成本較高;而訊息傳遞叢集利用更低成本的硬體實現了擴展性,適合更大規模和更分散的計算需求。每種架構都有其優勢和適用場景,取決於應用需求和成本考量。

十二、接下來的發展

  1. Dennard 縮放和摩爾定律的終結,使得單純依賴於更小的晶體管和更高的時鐘速度來提升效能已不再可行。因此,需要在架構上進行創新以改善成本、能耗和效能的平衡。
  2. 未來的發展方向:領域專用架構
    • 創新者可以使用 FPGA 或定制晶片而非軟體模擬器來展示想法:
      • 使用開放指令集(如 RISC-V)可以減少軟件的一次性工程費用。
      • 使用開放 IP 區塊(如 FreeChips)可以降低硬體的非重複工程成本。
      • 透過敏捷硬體開發和工具(如 Chisel)提高生產力。
      • 使用便宜的測試晶片(如每 100 顆 3mm² 的台積電晶片只需 1 美元)來實驗和驗證設計。
    • Domain-Specific Architectures, DSAs(領域專用架構)成為未來的關鍵方向,這些架構專注於執行特定的任務,並在這些任務中達到極高的效率。
    • 例如,Google 的 Tensor Processing Unit (TPU) 專為機器學習任務設計,其每瓦效能是傳統 GPU 和 CPU 的 30 到 80 倍。

上一篇
[Day01] 從史至今的計算機結構
下一篇
[Day03] RISC-V Instructions (1/3)
系列文
RISC-V 與處理器之架構學習及應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言